package com.yuandian.bpm.bi.modules.quartz.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.yuandian.bpm.bi.modules.user.vo.BasePage;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.List;

/**
 * 报表定时任务表-实体
 * @author zfsn
 * @date 2023-6-19
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class ConfReportTaskInfo extends BasePage {

    /**
     * 任务ID
     */
    private Integer id;

    /**
     * 任务名称(不允许重复)
     */
    private String taskName;

    /**
     * 任务状态 0:暂停 1:启动 2:结束
     */
    private Integer taskState;

    /**
     * 任务执行状态 0:异常/失败  1:正常
     */
    private Integer taskExecuteStatus;

	/**
	 * 任务执行IP
	 */
	private String taskExecuteIp;

    /**
     * 任务失败是否需要重启 0:否(默认)  1:是
     */
    private Integer taskRestartFlag;

    /**
     * 任务重启间隔时间(单位:分钟)
     */
    private Integer taskRestartInterval;

    /**
     * 任务重启次数
     */
    private Integer taskRestartCount;

    /**
     * 任务失败提醒策略 0:平台提醒(默认)
     */
    private Integer taskFailureReminderPolicy;

    /**
     * 任务执行频率 0:执行一次 1：重复执行 2: 表达式设置
     */
    private Integer taskExecuteFrequency;

    /**
     * 任务cron执行描述
     */
    private String taskCronExpressionStr;

    /**
     * 任务cron执行表达式
     */
    private String taskCronExpression;

    /**
     * 任务初次执行时间
     */
    private String taskStartTime;


	/** 任务结束类型：0：无限时间  1：设定结束时间  2：额外重复执行次数 */
	private int taskEndType;

	/** 任务结束值 */
	private String taskEndValue;

    /**
     * 任务结束时间
     */
	private String taskEndTime;

    /**
     * 任务上次执行时间
     */
    private String taskPreviousTime;

    /**
     * 任务下次执行时间
     */
    private String taskNextTime;

    /**
     * 任务已经执行次数
     */
    private Integer taskAlreadyExecuteCount;

    /**
     * 任务总需要执行次数 -1:表示无设定次数
     */
    private Integer taskTotalExecuteCount = -1;

    /**
     * 任务操作对象类型 0:报表(默认)
     */
    private Integer taskExecuteObjectType;

    /**
     * 任务成功后通知策略 0:邮件  1:第三方接口 (多个用 ',' 隔开)
     */
    private String taskNotificationPolicy;

    /**
     * 邮件发件人
     */
    private String emailSender;

    /**
     * 邮件收件人(多个用 ',' 隔开)
     */
    private String emailRecipient;

	/**
	 * 邮件收件人列表
	 */
	@TableField(exist = false)
	private List<String> emailRecipientList;

	/**
	 * 自定义邮件收件人
	 */
	private String emailRecipientCustom;

    /**
     * 邮件抄送人(多个用 ',' 隔开)
     */
    private String emailCcBy;

	/**
	 * 邮件抄送人 列表
	 */
	@TableField(exist = false)
	private List<String> emailCcByList;

	/**
	 * 自定义邮件抄送人(多个用 ',' 隔开)
	 */
	private String emailCcByCustom;

    /**
     * 邮件密送人(多个用 ',' 隔开)
     */
    private String emailBccRecipient;

	/**
	 * 邮件密送人列表
	 */
	@TableField(exist = false)
	private List<String> emailBccRecipientList;

	/**
	 * 自定义邮件密送人(多个用 ',' 隔开)
	 */
	private String emailBccRecipientCustom ;

    /**
     * 邮件主题
     */
    private String emailSubject;

    /**
     * 邮件内容
     */
    private String emailContent;

    /**
     * 邮件正文附报表链接标识 0:否 1:是
     */
    private Integer emailBodyLinkFlag;

    /**
     * 邮件使用附件标识 0:否 1:是
     */
    private Integer emailAttachmentFlag;

    /**
     * 第三方接口收件人(多个用 ',' 隔开)
     */
    private String interfaceRecipient;


	/**
	 * 第三方接口收件人 列表
	 */
	@TableField(exist = false)
	private List<String> interfaceRecipientList;

    /**
     * 第三方接口通知内容
     */
    private String interfaceContent;

    /**
     * 第三方接口正文附报表链接标识 0:否 1:是
     */
    private Integer interfaceBodyLinkFlag;

    /**
     * 报表模板ID
     */
    private String reportTemplateId;

    /**
     * 报表模板名称
     */
    private String reportTemplateName;

    /**
     * 报表数据开始时间
     */
    private String reportQueryStartTime;

    /**
     * 报表数据结束时间
     */
    private String reportQueryEndTime;

    /**
     * 报表文件名
     */
    private String reportFileName;

    /**
     * 报表文件格式(默认EXCEL)
     */
    private String reportFileFormat;

    /**
     * 报表文件保留时间(单位：天)
     */
    private Integer reportFileRetentionTime;

    /**
     * 创建人
     */
    private String createdBy;

    /**
     * 创建时间
     */
    private String createdTime;

    /**
     * 更新人
     */
    private String updatedBy;

    /**
     * 更新时间
     */
    private String updatedTime;


	 /** 任务列表 */
	 @TableField(exist = false)
	 private List<Integer> ids;

	 /** 任务名称 */
	 @TableField(exist = false)
	 private String jobName;

	/** 任务分组 */
	@TableField(exist = false)
	private String jobGroup;

	 /** 触发器名称 */
	 @TableField(exist = false)
	 private String triggerName;

	 /** 触发器分组 */
	 @TableField(exist = false)
	 private String triggerGroup;

	/**
	 * 任务成功后通知策略 0:邮件  1:第三方接口 (多个用 ',' 隔开)
	 */
	// @ApiModelProperty(value = "任务成功后通知策略 0:邮件  1:第三方接口", notes = "任务成功后通知策略 0:邮件  1:第三方接口")
	private List<String> taskNotificationPolicyList;
}
